package com.hcss.common.util;

import java.util.HashSet;
import java.util.Set;

import org.apache.commons.lang3.StringUtils;

/**
 * @Title:
 * @Description: 文件类型的判断
 * @Author:momo
 * @Since:2018年12月20日
 * @Version:1.1.0
 */
public class FileTypeUtil {
	
	public static final String IMG = "0"; // 图片
	public static final String DOC = "1"; // 文档
	public static final String VIDEO = "2"; // 视频
	public static final String VOICE = "3"; // 音频
	public static final String OTHER = "4"; // 其他
	public static Set<String> imgSet;
	public static Set<String> docSet;
	public static Set<String> videoSet;
	public static Set<String> voiceSet;
	
	// 实际工作中可以动态调整
	static {
		imgSet = new HashSet<String>() {
			private static final long serialVersionUID = 1L;
		{ 
			add("bmp"); add("jpg"); add("jpeg"); add("png"); add("tiff"); 
			add("pcx"); add("tga"); add("exif"); add("fpx"); add("svg"); 
			add("psd"); add("cdr"); add("pcd"); add("dxf"); add("ufo"); 
			add("eps"); add("ai"); add("raw"); add("wmf");
		}};
		
		docSet = new HashSet<String>() {
			private static final long serialVersionUID = 1L;
		{ 
			add("txt"); add("doc"); add("docx"); add("xls"); add("htm"); 
			add("html"); add("jsp"); add("rtf"); add("wpd"); add("pdf"); 
			add("ppt"); 
		}};
		
		videoSet = new HashSet<String>() {
			private static final long serialVersionUID = 1L;
		{ 
			add("mp4"); add("avi"); add("mov"); add("wmv"); add("asf"); 
			add("navi"); add("3gp"); add("mkv"); add("f4v"); add("rmvb"); 
			add("webm");
		}};
		
		voiceSet = new HashSet<String>() {
			private static final long serialVersionUID = 1L;
		{ 
			add("mp3"); add("wma"); add("wav"); add("mod"); add("ra"); 
			add("cd"); add("md"); add("asf"); add("aac"); add("vqf"); 
			add("ape");add("mid");add("ogg");add("m4a");add("vqf"); 
		}};
	}
	
	/**
	 * @return 文件类型代码
	 * @Description: 文件类型的判断
	 */
	public static String getFileType(String fileName) {
		String suffix = getFileSuffix(fileName);
		if(imgSet.contains(suffix)) {
			return IMG;
		}else if(docSet.contains(suffix)) {
			return DOC;
		}else if(videoSet.contains(suffix)) {
			return VIDEO;
		}else if(voiceSet.contains(suffix)) {
			return VOICE;
		}else {
			return OTHER;
		}
	}

	/**
	 * @Description: 返回文件后缀
	 * @param fileName
	 */
	private static String getFileSuffix(String fileName) {
        String[] strArray = fileName.split("\\.");
        int suffixIndex = strArray.length -1;
        String retStr = strArray[suffixIndex];
        if(StringUtils.isNotEmpty(retStr)) {
        	retStr = retStr.toLowerCase();
        }
        return retStr;
    }
}

    